﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FTools.Dominio;
using FTools.Persistencia;
using System.Data.SqlClient;
using System.Collections;
using FTools.Interface;

namespace FTools.Comunicacion
{
    class ComIdentificador : InterfaceIdentificador
    {
        Conexion objConexion = new Conexion();
        SqlConnection conexion;
        SqlTransaction transaccion = null;
        PerIdentificador objPerIdentificador = new PerIdentificador();

        public Identificador obtenerIdentificador(long xIdIdentificador)
        {
            try
            {
                conexion = objConexion.abrirConexion();
                transaccion = conexion.BeginTransaction();
                Identificador objIdentificador = objPerIdentificador.obtenerIdentificador(conexion, transaccion, xIdIdentificador);
                transaccion.Commit();
                return objIdentificador;
            }
            catch (Exception ex)
            {
                throw new Exception("#Comunicacion# " + ex.Message);
            }
            finally
            {
                objConexion.cerrarConexion();
            }
        }

        public Boolean existeIdentificador(long xIdIdentificador)
        {
            try
            {
                conexion = objConexion.abrirConexion();
                transaccion = conexion.BeginTransaction();
                Boolean existe = objPerIdentificador.existeIdentificador(conexion, transaccion, xIdIdentificador);
                transaccion.Commit();
                return existe;
            }
            catch (Exception ex)
            {
                throw new Exception("#Comunicacion# " + ex.Message);
            }
            finally
            {
                objConexion.cerrarConexion();
            }
        }

        public ArrayList obtenerColeccionIdentificador()
        {
            try
            {
                conexion = objConexion.abrirConexion();
                transaccion = conexion.BeginTransaction();
                ArrayList colIdentificador = objPerIdentificador.obtenerColeccionIdentificador(conexion, transaccion);
                transaccion.Commit();
                return colIdentificador;
            }
            catch (Exception ex)
            {
                throw new Exception("#Comunicacion# " + ex.Message);
            }
            finally
            {
                objConexion.cerrarConexion();
            }
        }

        public int altaIdentificador(Identificador xObjIdentificador)
        {
            try
            {
                conexion = objConexion.abrirConexion();
                transaccion = conexion.BeginTransaction();
                int nro = objPerIdentificador.altaIdentificador(conexion, transaccion, xObjIdentificador);
                transaccion.Commit();
                return nro;
            }
            catch (Exception ex)
            {
                transaccion.Rollback();
                throw new Exception("#Comunicacion# " + ex.Message);
            }
            finally
            {
                objConexion.cerrarConexion();
            }
        }

        public int bajaIdentificador(Identificador xObjIdentificador)
        {
            try
            {
                conexion = objConexion.abrirConexion();
                transaccion = conexion.BeginTransaction();
                int nro = objPerIdentificador.bajaIdentificador(conexion, transaccion, xObjIdentificador);
                transaccion.Commit();
                return nro;
            }
            catch (Exception ex)
            {
                transaccion.Rollback();
                throw new Exception("#Comunicacion# " + ex.Message);
            }
            finally
            {
                objConexion.cerrarConexion();
            }
        }

    }
}
